In [1]:
import pandas as pd
In [2]:
import plotly.graph_objs as go
In [3]:
import plotly.express as px
In [4]:
import plotly.io as pio
In [5]:
pio.templates.default = "plotly_white"
In [6]:
data = pd.read_csv('UK_monthly_gdp.csv')
In [7]:
print(data.head())
  Time Period  GDP Growth
0    /01/2020         0.3
1    /02/2020        -0.5
2    /03/2020        -7.0
3    /04/2020       -20.9
4    /05/2020         3.2
In [8]:
fig = go.Figure(data=go.Heatmap(
                   z=[data['GDP Growth']],
                   x=data.index,
                   y=['GDP Growth'],
                   colorscale='Viridis'))
In [9]:
fig.update_layout(title='GDP Growth over Time',
                  xaxis_title='Time Period',
                  yaxis_title='')
In [10]:
fig.show()

Convert monthly data to quarterly data using resample method¶

In [11]:
data['Time Period'] = pd.to_datetime(data['Time Period'], format='/%m/%Y')
In [12]:
data.set_index('Time Period', inplace=True)
In [13]:
quarterly_data = data.resample('Q').mean()
In [14]:
print(quarterly_data.head())
             GDP Growth
Time Period            
2020-03-31    -2.400000
2020-06-30    -2.900000
2020-09-30     3.500000
2020-12-31     0.200000
2021-03-31     0.033333

Calculate recession based on quarterly GDP growth¶

In [15]:
quarterly_data['Recession'] = ((quarterly_data['GDP Growth'] < 0) & (quarterly_data['GDP Growth'].shift(1) < 0))

Fill missing values with False (since the first quarter cannot be in a recession)¶

In [16]:
quarterly_data['Recession'].fillna(False, inplace=True)

Plot the GDP growth and recession data¶

In [17]:
fig = go.Figure()
In [18]:
fig.add_trace(go.Scatter(x=quarterly_data.index, 
                         y=quarterly_data['GDP Growth'], 
                         name='GDP Growth', 
                         line=dict(color='green', width=2)))
In [19]:
fig.add_trace(go.Scatter(x=quarterly_data[quarterly_data['Recession']].index, 
                         y=quarterly_data[quarterly_data['Recession']]['GDP Growth'], 
                         name='Recession', line=dict(color='red', width=2)))
In [20]:
fig.update_layout(title='GDP Growth and Recession over Time (Quarterly Data)',
                  xaxis_title='Time Period',
                  yaxis_title='GDP Growth')
In [21]:
fig.show()
In [22]:
quarterly_data['Recession Start'] = quarterly_data['Recession'].ne(quarterly_data['Recession'].shift()).cumsum()
In [23]:
recession_periods = quarterly_data.groupby('Recession Start')
In [24]:
recession_duration = recession_periods.size()
In [25]:
recession_severity = recession_periods['GDP Growth'].sum()
In [26]:
fig = go.Figure()
In [27]:
fig.add_trace(go.Bar(x=recession_duration.index, y=recession_duration,
                     name='Recession Duration'))
In [28]:
fig.add_trace(go.Bar(x=recession_severity.index, y=recession_severity,
                     name='Recession Severity'))
In [29]:
fig.update_layout(title='Duration and Severity of Recession',
                  xaxis_title='Recession Periods',
                  yaxis_title='Duration/Severity')
In [30]:
fig.show()

A recession is an economic situation that arrives when the circulation of money in the economy is low for two consecutive quarters. Recession is calculated and analyzed according to the growth in GDP, the growth in the unemployment rate, and the growth in consumer spending rate. I hope you liked this article on Recession Analysis using Python. Feel free to ask valuable questions in the comments section below.

In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]: